草庐IT

c++ - 包装第 3 方 DLL

全部标签

c - 在 Cygwin 中运行 C 程序不会产生任何结果

在编写一个简单的C程序时,我遇到了“printf”不产生任何结果的问题。代码:#includeintmain(){printf("HelloWorld\n");}编译运行后的Cygwin日志:MMGV@Philipp/cygdrive/c/users/MMGV/Desktop/Programme$gcctest.c-otest.exeMMGV@Philipp/cygdrive/c/users/MMGV/Desktop/Programme$test.exeMMGV@Philipp/cygdrive/c/users/MMGV/Desktop/Programme$没有错误信息,什么都没有。在

c - 在 Win 10 而非 Win 7 中卸载 DLL 时调试崩溃

不完全确定我是否已经解决了这个问题,但这是我所看到的以及我认为正在发生的事情。我有一个主要用C编写的Win32程序,它加载一个C++DLL。该DLL通过COM对象将数据从C程序传递到另一个应用程序——一个可能由DLL本身实例化的对象。所有这一切显然至少在WindowsXP和Windows7中运行良好(可能是Win95和Win98,我需要更深入地回顾代码历史以找出引入此接口(interface)的时间),但在Windows10中程序崩溃在FreeLibrary()调用此DLL期间。在调试器中检查时,DLL_DETACH_PROCESS似乎已成功处理(处理该消息时未执行任何代码)。崩溃发生

c - 迭代 PEB DllName 仅显示 exe 名称

我正在尝试获取我的应用程序中已加载模块的列表(与安全/shellcode有关,因此请避免调用WINAPI)。我正在遍历PEB->Ldr模块双向链表,但每次打印DLL的名称时,它只是打印当前正在执行的应用程序的名称和路径。在其他人的代码中,我看到他们只是将当前的LIST_ENTRY指针设为PLDR_DATA_TABLE_ENTRY,您可以直接调用FullDllName那样。但是,例如,要实际获取基址,您需要调用Reserved2[0]而不是DllBase,这是可以理解的,因为LIST_ENTRY是结构中的8个字节,但它没有解释为什么可以直接调用FullDllName。Here'sanex

c++ - 在同一个 DLL 中使用 _COM_SMARTPTR CreateInstance 而无需注册

我目前正在尝试编写一个DLL,它使用在系统中注册的Typelib(.tlb)。此Typelib要求我使用自己的类实现两个接口(interface),并在运行对象表中注册其中一个,这是我在使用VisualStudio2015的ATL项目中完成的。使用我的DLL的应用程序应该完全不了解COM,一切都应该在幕后工作并隐藏在我正在实现的DLL中。在我的DLL中,有时我试图获取类MyClass的实例,它实现了上面提到的类型库的COM接口(interface)。代码如下所示:IInterfaceClassPtrdataPtr;hr=dataPtr.CreateInstance(CLSID_MyCl

c++ - KMDF 的多线程 DeviceIOControl

在回答我的问题之前,我将回顾一下我目前正在使用的东西,以便您对我已经做过/尝试过的事情有一个很好的了解。我有一个多线程用户模式​​Windows桌面应用程序,它向KMDF驱动程序发出DeviceIOControl调用(纯软件,无硬件)。有5个单独的线程,它们都不断地对驱动程序进行相同的自定义IOCTL调用。此请求包括:PsLookupProcessByProcessId以获取要从中读取内存的进程。MmCopyVirtualMemory将请求的内存复制到提供的缓冲区中。ObDereferenceObject减少引用计数。驱动程序目前正在连续执行此操作,而我的用户模式应用程序中的主要瓶颈是

c - IUP - Windows SDK 静态链接

我想用C编写一个多平台的本地桌面应用程序。经过一番搜索,我找到了IUP完美契合。不幸的是,我正在努力链接WindowsSDK。现在,我只想为Windows8.1静态编译x64版本。当我编译thisCode::Blocks中的示例,我收到以下错误:g++.exe-LC:\MinGW\iup-o"bin-debug\EVEEditor.exe"obj-debug\main.o-lgdi32-luser32-lkernel32-lcomctl32-lole32-lfreetype6-liup-liup_mglplot-liup_plot-liup_scintilla-liupcd-liupc

windows - 动态加载 Windows dll 时,如何知道缺少的相关模块的名称

我有时会遇到无法在客户站点加载动态库的问题。这通常是因为他们的系统配置错误。我需要能够获取丢失的依赖模块的名称,以便我可以记录它,并使修复他们的系统变得更加容易。我怎样才能做到这一点?请注意,我需要一个可以放入我的代码中的答案,这意味着我不能使用依赖性检查器、进程监视器或任何其他工具来解决问题。我确实需要一种以编程方式进行的方法。DependencyChecker可以做到这一点意味着有办法。 最佳答案 从win7开始ntdll.dll导出下一个api:structFAILUREDATA{NTSTATUSstatus;WCHARDll

CTR-AES256 加密与 OpenSSL -aes-256-ctr 不匹配

我的问题是我无法从下面的C代码中获取AES256CTR输出以匹配下面OpenSSL命令的输出。C代码产生这个:5fb718d128627f5035bae967a717ab22f9e409ce23267b938202d387eb0126ac962c018cc8aff3dea4187f2946002e00OpenSSL命令行产生这个:5fb718d128627f5035bae967a717ab223c0111bd391474763157a653f90009b46fa949bc6d0077242defb9c4注意前16个字节是相同的,因为nonceIV是相同的,但是,当nonceIV在下一次

windows - 使用 Inno Setup 安装程序安装 Windows shell 扩展 DLL

我正在开发一个shell扩展DLL。我想使用InnoSetup安装程序安装它。我看到安装程序问,如果我想用程序安装shell扩展,我想使用InnoSetup安装程序进行类似的操作。我该怎么做呢?如果没有,你能指引我走上正确的道路吗?几天来我一直在搜索有关此的任何信息。 最佳答案 shell扩展只是一个带有COM类的DLL。所以只需部署它并使用regserverflag注册它:[Files]Source:"myext.dll";DestDir:"{app}";Flags:regserver另见RegisterExplorerCOMex

在 cygwin/mingw 上为 windows 编译

因此,我正在尝试为cygwin中的cairo图形库编译一个简单的C示例。为cygwin编译时,一切都按预期工作,但对于windows它编译,但在尝试执行时不起作用。这是我的生成文件:CFLAGS=-lcairo#WIN32HEADERS=/usr/i686-w64-mingw32/sys-root/mingw/include/cairoWIN32HEADERS=/usr/i686-w64-mingw32/sys-root/mingw/include/cairo-I/usr/i686-w64-mingw32/sys-root/mingw/include/glib-2.0-I/usr/i6